#include "../../common/commonbase.h"

namespace XIAOO{
    struct returnJsonStruct{
        int code;
        std::string msg;
        Json::Value data;
    };

    struct userEntity{
        int id;
        std::string username;
        std::string password;
        int age;
        int sex;
        int created_at;
        int status;
    };

    const int CODE_SUCCESS = 0;//成功
    const int CODE_DB_QUERY_ERROR = 100;//查询错误
    const int CODE_DB_INSERT_ERROR = 101;//插入错误
    const int CODE_DB_UPDATE_ERROR = 102;//更新错误

    const int CODE_ACCOUNT_EXIST_ERROR = 200;//账户已存在
    const int CODE_PASSWORD_ERROR = 201;//密码错误
    const int CODE_EMPTY_PARAM = 202;//参数为空
    const int CODE_ACCOUNT_NOT_EXIST_ERROR = 203;//账号不存在
    const int CODE_UNLOGIN_ERROR = 204;//未登录或账号异常
    const int CODE_EXIST_FRIEND_ERROR = 205;//已添加该好友
    const int CODE_CHAT_ERROR = 206;//好友不在线或发送失败
    
    static std::map<int, int> uidSockfdMap;

    class UserController{
        public:
            UserController();
            ~UserController();

            Json::Value registe(Json::Value root);//注册
            Json::Value login(Json::Value root, int sockfd);//登陆
            Json::Value getUserInfo(Json::Value root);//获取个人信息
            Json::Value addFriend(Json::Value root);//添加好友
            Json::Value friendList(Json::Value root);//好友列表
            Json::Value chat(Json::Value root, int sockfd);//聊天

            void offLine(int sockfd);
            
        private:
            bool addMapForUidAndSockfd(Json::Value returnRoot, int sockfd);
            bool _checkLogin(Json::Value root, userEntity* user);
            Json::Value _echoJson(int code, std::string msg, Json::Value data = "");

        private:
            std::string recvChatCallback = "user/recvChatCallback";            
    };
}